练习

(1)下面的转换哪些不是隐式转换?

        a. int 转换为 short

        b. short 转换为 int

        c. bool 转换为 string

        d. byte 转换为 float

答案:a和c的转换不能隐式进行。

(2) 以 short 类型作为基本类型编写一个 color 枚举,使其包含彩虹的颜色加上黑色和白色。这个枚举可使用 byte 类型作为基本类型吗?

答案:

        enum color : short
        {
            Red, Orige, Yellow, Green, Blue, Indigo, Violet, Black, White
        }
        可以,byte类型可以包含0255之间的数字。
        如果枚举项使用不同值,基于byte的枚举可以包含256项;
        如果给枚举项使用重复的值,就可以包含更多的项。

(3)修改第 4 章的 Mandelbrot 集合生成程序示例,使用下面的结构表示复数:

        struct imagNum
        {
            public double real, imag;
        }

(4)下面的代码可以成功编译吗?为什么?

        string[] blab = new string[5]
        blab[5] = "5th string".

答案:

        不,原因如下:
        • 遗漏了语句末尾的分号。
        • 第二行尝试访问blab中不存在的第6个元素。
        • 第二行尝试指定未包含在双引号中的字符串。

(5)编写一个控制台应用程序,它接收用户输入的一个字符串,将其中的字符以与输入相反的顺序输出。

答案:

        static void Main(string[] args)
        {
            Console.WriteLine("Enter a string:");
            string myString = Console.ReadLine();
            string reversedString = "";
            for(int index = myString.Length - 1; index >= 0; index--)
            {
                reversedString += myString[index];
            }
            Console.WriteLine("Reversed: {0}", reversedString);
        }

(6)编写一个控制台应用程序,它接收一个字符串,用 yes 替换字符串中所有的 no

答案:

        static void Main(string[] args)
        {
            Console.WriteLine("Enter a string:");
            string myString = Console.ReadLine();
            myString = myString.Replace("no", "yes");
            Console.WriteLine("Replace \"no\" with \"yes\": {0}", myString);
        }

(7)编写一个控制台应用程序,给字符串中的每个单词加上双引号。

答案:

        static void Main(string[] args)
        {
            Console.WriteLine("Enter a string:");
            string myString = Console.ReadLine();
            myString = "\" + myString.Replace(" ", "\" \"") + "\"";
            Console.WriteLine("Added double quotes arround words: {0}", myString);   
        }

        或者使用String.Split();
        static void Main(string[] args)
        {
            Console.WriteLine("Enter a string:");
            string myString = Console.ReadLine();
            string[] myWords = myString.Split(' ');
            Console.WriteLine("Added double quotes arround words:");   
        }
        foreach(string myWord in myWords)
        {
            Console.Write("\"{0}\" ", myWord);
        }

🔚